﻿// 0726train04.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <sstream>
#include <string>
#include <vector>
#include <map>
#include <set>
#include <unordered_set>

using namespace std;

/*
 给你一个整数数组 nums
 如果任一值在数组中出现至少两次 ，返回 true ；
 如果数组中每个元素互不相同，返回 false
 输入：nums = [1,2,3,1]
 输出：true
 */


bool IsOnly(vector<int>&num_vec)
{
	unordered_set<int>oh_set;

	bool is_only = true;
	for (auto&num: num_vec)
	{
		if (oh_set.count(num))
		{
			is_only = false;
			break;
		}
		oh_set.insert(num);
	}
	return is_only;
}


/*
 给定两个数组 nums1 和 nums2 ，返回 它们的交集 。
 输出结果中的每个元素一定是 唯一 的。
 我们可以 不考虑输出结果的顺序 。
 */

void GetRepeat(vector<int>&nums1_vec, vector<int>&nums2_vec)
{
	vector<int>result;
	unordered_set<int>oh_set;
	unordered_set<int>res_set;

	for (auto &num:nums1_vec)
	{
		oh_set.insert(num);
	}

	for (auto &num:nums2_vec)
	{
		if (oh_set.count(num) && !res_set.count(num))
		{
			res_set.insert(num);
			result.push_back(num);
		}
	}

	for (auto&num:result)
	{
		cout << num << ' ';
	}

}

int main()
{

	{
		//输入：nums1 = [1, 2, 2, 1], nums2 = [2, 2]
		//输出：[2]
		//输入：nums1 = [4,9,5], nums2 = [9,4,9,8,4]
		//输出：[2]
		vector<int>nums1_vec = { 4,9,5 };
		vector<int>nums2_vec = { 9,4,9,8,4 };

		GetRepeat(nums1_vec, nums2_vec);

		return 0;
	}

	vector<int>num_vec = { 1,2,3 };
	cout << IsOnly(num_vec);
}

// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单

// 入门使用技巧: 
//   1. 使用解决方案资源管理器窗口添加/管理文件
//   2. 使用团队资源管理器窗口连接到源代码管理
//   3. 使用输出窗口查看生成输出和其他消息
//   4. 使用错误列表窗口查看错误
//   5. 转到“项目”>“添加新项”以创建新的代码文件，或转到“项目”>“添加现有项”以将现有代码文件添加到项目
//   6. 将来，若要再次打开此项目，请转到“文件”>“打开”>“项目”并选择 .sln 文件
